package com.ohxwj.modules.sys.service.impl;

import com.ohxwj.modules.sys.dao.SysModuleDao;
import com.ohxwj.modules.sys.entity.SysModuleEntity;
import com.ohxwj.modules.sys.service.SysModuleService;
import com.qiniu.util.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;


@Service("sysModuleService")
public class SysModuleServiceImpl implements SysModuleService {
	@Autowired
	private SysModuleDao sysModuleDao;
	
	@Override
	public SysModuleEntity queryObject(Long moduleId){
		return sysModuleDao.queryObject(moduleId);
	}
	
	@Override
	public List<SysModuleEntity> queryList(Map<String, Object> map){
		return sysModuleDao.queryList(map);
	}
	
	@Override
	public void save(SysModuleEntity sysModule){
		sysModuleDao.save(sysModule);
	}
	
	@Override
	public void update(SysModuleEntity sysModule){
		sysModuleDao.update(sysModule);
	}
	
	@Override
	public void delete(Long moduleId){
		sysModuleDao.delete(moduleId);
	}

	@Override
	public List<Long> queryModuleIdList(Long parentId) {
		return sysModuleDao.queryModuleIdList(parentId);
	}

	@Override
	public String getSubModuleIdList(Long moduleId){
		//部门及子部门ID列表
		List<Long> moduleIdList = new ArrayList<>();

		//获取子部门ID
		List<Long> subIdList = queryModuleIdList(moduleId);
		getModuleTreeList(subIdList, moduleIdList);

		//添加本部门
		moduleIdList.add(moduleId);

		String moduleFilter = StringUtils.join(moduleIdList, ",");
		return moduleFilter;
	}

	/**
	 * 递归
	 */
	public void getModuleTreeList(List<Long> subIdList, List<Long> moduleIdList){
		for(Long moduleId : subIdList){
			List<Long> list = queryModuleIdList(moduleId);
			if(list.size() > 0){
				getModuleTreeList(list, moduleIdList);
			}

			moduleIdList.add(moduleId);
		}
	}
}
